home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Amiga Public Domain Connection / APDC Disk #025 - Programming Languages (198x)(Amiga Public Domain Connection)(US)[m][WB].zip / APDC Disk #025 - Programming Languages (198x)(Amiga Public Domain Connection)(US)[m][WB].adf / Modula-2 / m2 / TranslatorDemo.MOD < prev    next >
Text File  |  1988-03-15  |  2KB  |  65 lines

  1. (********************************************************************************
  2.  
  3. Name         : TranslatorDemo.MOD
  4. Version      : 1.0
  5. Purpose      : Demo using Translator Library
  6. Author       : ms
  7. Modified     : 3.4.86  19:10 ms
  8.  
  9. ********************************************************************************)
  10.  
  11. MODULE TranslatorDemo;
  12.  
  13. FROM Terminal   IMPORT BusyRead, Read, Write, WriteString, WriteLn;
  14. FROM Translator IMPORT Translate;
  15.  
  16. CONST bs  = 10C;
  17.       lf  = 12C;
  18.       ff  = 14C;
  19.       cr  = 15C;
  20.       esc = 33C;
  21.       del =177C;
  22.       csi =233C;
  23.  
  24. VAR in, out: ARRAY [0..127] OF CHAR;
  25.     err: LONGINT;
  26.  
  27. PROCEDURE ReadString(VAR st: ARRAY OF CHAR);
  28. VAR pos: CARDINAL; ch: CHAR;
  29. BEGIN
  30.   pos:=0;
  31.   LOOP
  32.     Read(ch);
  33.     IF (ch=cr) OR (ch=lf) THEN
  34.       IF pos<=HIGH(st) THEN st[pos]:=0C END; EXIT
  35.     ELSIF  ch=esc THEN
  36.       st[0]:=0C; EXIT
  37.     ELSIF ((ch=bs) OR (ch=del)) & (pos>0) THEN
  38.       Write(bs); Write(' '); Write(bs); DEC(pos);
  39.     ELSIF (ch>=' ') & (ch<del) & (pos<HIGH(st)) THEN
  40.       st[pos]:=ch; Write(ch); INC(pos)
  41.     ELSIF ch=csi THEN (* Command Sequence Introducer *)
  42.       REPEAT BusyRead(ch) UNTIL ch=0C (* Skip Command Sequence *)
  43.     END
  44.   END
  45. END ReadString;
  46.  
  47. BEGIN
  48.   WriteString('Translator Demo'); WriteLn;
  49.   WriteString('==============='); WriteLn; WriteLn;
  50.   LOOP
  51.     WriteString('text> '); ReadString(in); WriteLn;
  52.     IF in[0]#0C THEN
  53.       Translate(in, out, err);
  54.       IF err=0D THEN
  55.         WriteString('phon> '); WriteString(out); WriteLn
  56.       ELSE
  57.         WriteString('Translator Returns Error'); WriteLn
  58.       END
  59.     ELSE
  60.       EXIT
  61.     END;
  62.     WriteLn
  63.   END (* LOOP *)
  64. END TranslatorDemo.
  65.